package com.hbpu.usercenter.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hbpu.usercenter.dto.DeleteTeamDTO;
import com.hbpu.usercenter.dto.JoinTeamDTO;
import com.hbpu.usercenter.dto.QuitTeamDTO;
import com.hbpu.usercenter.dto.TeamDTO;
import com.hbpu.usercenter.pojo.Team;
import com.hbpu.usercenter.vo.TeamUserVO;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

/**
* @author 马可
* @description 针对表【team(队伍)】的数据库操作Service
* @createDate 2025-09-22 22:16:15
*/
public interface TeamService extends IService<Team> {
    /**
     * 添加队伍
     * @param teamDTO 前端返回数据所映射的对象
     * @param request 用户请求
     * @return 返回添加成功后的TeamID
     */
    Long addTeam(TeamDTO teamDTO,  HttpServletRequest request);

    /**
     * 返回所有队伍
     * @return 返回给前端一个队伍和该队伍的用户的包装对象
     */
    List<TeamUserVO> listTeam();

    /**
     * 更新队伍信息
     * @param teamDTO 前端返回数据所映射的对象
     * @param request 用户请求
     * @return 更新成功为true，否则为false
     */
    Boolean updateTeam(TeamDTO teamDTO,  HttpServletRequest request);

    /**
     * 加入队伍
     * @param joinTeamDTO 包含加入队伍数据的包装类
     * @return 加入成功返回true
     */
    Boolean joinTeam(JoinTeamDTO joinTeamDTO);

    /**
     * 退出队伍
     * @param quitTeamDTO 包含退出队伍数据的DTO封装类
     * @return 退出成功返回true
     */
    Boolean quitTeam(QuitTeamDTO quitTeamDTO);

    /**
     * 删除队伍
     * @param deleteTeamDTO 包含删除队伍数据的DTO封装类
     * @return 删除成功返回true
     */
    Boolean deleteTeam(DeleteTeamDTO deleteTeamDTO);
}
